var Layout = function(config){
	//属性复制
	$.extend(this,Layout.defaults,config);
	this.renderTo = config.renderTo==null?$(document.body):$("#"+config.renderTo);
	this.init();
}
Layout.defaults = {
	

}
Layout.prototype = {
	init : function(){
		var entity = this;
		entity.addLayout();
		$(window).resize(function(){
			entity.setLayoutSize();
		});
	},
	addLayout : function(){
		var entity = this;
		//创建一个layout
		var layoutId = entity.id==null?entity.guid():entity.id;
			var layout = new Array();
				layout.push('<div id="'+layoutId+'" class="layout">');
				layout.push('</div>');
		$(layout.join('')).appendTo(entity.renderTo);
		entity.layout = $("#"+layoutId);
		//如果设置了高度则使用指定高度，如果没有则自适应
		if(entity.height){
			$("#"+layoutId).height(entity.height);
		}else {
			$("#"+layoutId).height(entity.renderTo.height());
		}
		//如果设置了区域
		if(entity.items){
			//对区域按照【东西南北中】排序
			entity.sortRegion(entity.items);
			var items = entity.items;
			for(var i=0;i<items.length;i++){
				var item = items[i];
				if(!item){
					continue;
				}
				var itemId = item.id;
				//创建一个layout模块
				var itemBody = entity.itemBody(item);
				$(itemBody).appendTo(entity.layout);
				if(item.split){
					var splitBody = entity.splitBody(item);
					//如果是south加分割线，则是将其加到前面
					if(item.region=='south'){
					$(splitBody).insertBefore($("#"+itemId));
					}else{
					$(splitBody).appendTo(entity.layout);
					}
				}
				//设置padding
				if(item.padding){
					$("#"+itemId).parent().css("margin",item.padding);
				}
				//是否显示border
				if(!item.border){
					$("#"+itemId).removeClass("border");
				}
				//设置内容
				if(item.html){
					$("#"+itemId+" .body").html(item.html);
				}
			}
			entity.setLayoutSize();
		}
	},
	//创建一个区域
	itemBody : function(item){
		var div = new Array();
			div.push('<div class="item-'+item.region+'"><div id="'+item.id+'" class="layoutItem border '+item.region+'">');
			//创建标题{如果填写了标题则创建，不填写则不创建}
			if(item.title){
			div.push('<div class="head"><span class="title">'+item.title+'</span><span class="bar"></span></div>')
			}
			div.push('<div class="body"></div>')
			div.push('</div></div>');
			return div.join('');
	},
	//创建一个分割线
	splitBody :function(item){
		var div = '<div class="split-'+item.region+' split"></div>';
		return div;
	},
	//生成一个随机ID
	guid : function(){
		var guid='imaker-0000-0000-0000-0000-0000';
		return guid.replace(/0/g, function(){return Math.random().toString(16).substr(2,1)});
	},
	//设置区域的大小
	setLayoutSize:function(){
		var entity = this;
		//设置模块的相关属性
		var items = entity.items;
		for(var i=0;i<items.length;i++){
			var item = items[i];
			if(!item){
				continue;
			}
			var itemId = item.id;
			entity.layoutMargins();
		//进行宽度设置，如果没有指定固定宽度，则自适应
		if(item.width){
			if(!isNaN(item.width)){
				$("#"+itemId).parent().width(item.width);
			}else {
				$("#"+itemId).parent().width(entity.renderTo.width()-entity.layoutWidth-entity.marginWidth-3);
			}
		}
		//如果设置了高度，则使用该高度，如果没有设置高度，则会自适应
		if(item.height){
			$("#"+itemId).height(item.height);
			var height = item.height-$("#"+itemId+" .head").height();
			$("#"+itemId+" .body").height();
		}else {
			var height = entity.renderTo.height()-entity.layoutHeight-entity.marginHeight;
			$("#"+itemId).height(height);
			//设置layoutBody的高度
			var bodyHeight = height-$("#"+itemId+" .head").height();
			$("#"+itemId+" .body").height(bodyHeight);
		}
		}
		entity.setSplitSize();
	},
//	设置分割线的大小
	setSplitSize : function(){
		var entity = this;
		entity.layout.find(".split").each(function(){
			var split = $(this);
			if(split.is(".split-east")||split.is(".split-west")||split.is(".split-center")){
				split.height(entity.renderTo.height()-entity.layoutHeight-entity.marginHeight);
			}else {
				
			}
		});
	},
//页面中元素的总margin值
	layoutMargins : function(){
		var entity = this;
		entity.marginWidth = 0;
		entity.marginHeight = 0;
		entity.layout.find(".split-center,.split-west").each(function(){
			var layoutItem = $(this);
			entity.marginWidth+=layoutItem.width();
		});
		entity.layout.find(".split-north,.split-south").each(function(){
			var layoutItem = $(this);
			entity.marginHeight += layoutItem.height();
		});
	},
	//排序区域
	sortRegion : function(items){
		var entity = this;
		var array = [];
		entity.layoutHeight = 0;
		entity.layoutWidth = 0;
		for(var i=0;i<items.length;i++){
			var item = items[i];
			switch(item.region)
			{
				case 'north':
				{
					//如果没有指定id，则分配一个随机ID
					if(!item.id){
						item.id = entity.guid();
					}
					array[0] = item;
					if(!isNaN(item.height)){
						entity.layoutHeight += item.height+2;
					}
					break;
				}
				case 'south':
				{
					if(!item.id){
						item.id = entity.guid();
					}
					array[4] = item;
					if(!isNaN(item.height)){
						entity.layoutHeight += item.height;
					}
					break;
				}
				case 'west':
				{
					if(!item.id){
						item.id = entity.guid();
					}
					array[1] = item;
					if(!isNaN(item.width)){
						entity.layoutWidth+=item.width+2;
					}
					break;
				}
			   case 'center':
				{
					if(!item.id){
						item.id = entity.guid();
					}
					array[2] = item;
					if(!isNaN(item.width)){
						entity.layoutWidth+=item.width+2;
					}
					break;
				}
				case 'east':
				{
					if(!item.id){
						item.id = entity.guid();
					}
					array[3] = item;
					if(!isNaN(item.width)){
						entity.layoutWidth+=item.width+2;
					}
					break;
				}
		}
	}
		entity.items = array;
}
}